--TD 4.3.6 Sink Connect Accessories Test

baselib.report(0x00, "TD4.3.6 beginning.")   
busilib.ResetOutputs()     -- 恢复到脚本执行前的初始状态
busilib.SetSwitchState(SW.AD8210_PWR, 0)     -- 关闭运放电源
-- 过压保护
busilib.SetProtecter(ADC.VBUS, 3900, 8, 0x40021018, 0x0100, 0)      -- 6V SW.VBUS_GEN GPIOE.8
busilib.SetProtecter(ADC.CC1, 12000, 8, 0x40020418, 0x4000, 0)      -- 5.5V SW.VCONN_GEN GPIOB.14
busilib.SetProtecter(ADC.CC2, 12000, 8, 0x40020418, 0x4000, 0)      -- 5.5V SW.VCONN_GEN GPIOB.14
tcpclib.Reinit(1, 0)       -- 重新初始化 TCPC

--[[ busilib.SetSwitchState(switch, state)  功能: 设置某开关状态  参数: switch：要设置的开关   state: 要设置的开关状态，范围为 0 ~ 1 ]]
-- 第一步：在两CC上应用Rd    （原文：CVS applied Rd to both CCs.）
busilib.SetSwitchState(SW.CC1_RD, 1)
busilib.SetSwitchState(SW.CC2_RD, 1)
baselib.report(0x00, "CVS 在两条CC上提供Rd.") 
baselib.delay(5)

-- 第二步：CVS验证待测物不做出响应   （原文：CVS verifies no activity on the DUT. [TD.4.3.6.V.1]）
-- 脚本检测PUT不做出反应操作为: 检查PUT不加载 VBus、不加载 Vconn、不上拉 Rp
local IsPassV1 = 1  -- 标识检查点V1是否pass
-- 检查PUT不加载 Vconn
local Vconn = busilib.GetADC(ADC.CC2, 4) 
if Vconn > 2750 then
    IsPassV1 = 0
    baselib.report(0x00, "第二步检测Vconn结果: PUT 加载了Vconn.") 
end
-- 检查不加载 VBus
local VBUS = busilib.GetADC(ADC.VBUS, 4)   
if VBUS > 800 then
    IsPassV1 = 0
    baselib.report(0x00, "第二步检测VBUS结果: PUT 加载了VBUS.") 
end
-- 检查不上拉Rp，检查两条CC线
local VCC1 = busilib.GetADC(ADC.CC1, 4)
local VCC2 = busilib.GetADC(ADC.CC2, 4)
baselib.report(0x00, "读取到的 CC1 电压为: " .. VCC1 .. "mV, 读取到的 CC2 电压为: " .. VCC2 .. "mV.")  
if VCC1 > 250 or VCC2 > 250 then   -- 电压应小于0.25V
    IsPassV1 = 0
    baselib.report(0x00, "第二步检测CC线结果: PUT 加载了Rp.") 
end
if IsPassV1 == 1 then
    baselib.report(0x00, "检测结果为 PUT 没有反应, TD.4.3.6.V.1 pass.")
else
    baselib.report(0x00, "TD.4.3.6.V.1 fail.")
end

-- 第三步：在两CC上应用Ra    （原文：CVS applied Ra to both CCs.）
busilib.SetSwitchState(SW.CC1_RD, 0)   -- 关闭第一步的Rd
busilib.SetSwitchState(SW.CC2_RD, 0)
busilib.SetSwitchState(SW.CC1_RA, 1)
busilib.SetSwitchState(SW.CC2_RA, 1)
baselib.report(0x00, "CVS 在两条CC上提供Ra.") 
baselib.delay(5)

-- 第四步：待测物不做出响应   （原文：CVS verifies no activity on the DUT. [TD.4.3.6.V.2]）
local IsPassV2 = 1  -- 标识检查点V2是否pass
-- 检查PUT不加载 Vconn
Vconn = busilib.GetADC(ADC.CC2, 4) 
if Vconn > 2750 then
    IsPassV2 = 0
    baselib.report(0x00, "第四步检测Vconn结果: PUT 加载了Vconn.") 
end
-- 检查不加载 VBus
VBUS = busilib.GetADC(ADC.VBUS, 4)   
if VBUS > 800 then
    IsPassV2 = 0
    baselib.report(0x00, "第四步检测VBUS结果: PUT 加载了VBUS.") 
end
-- 检查不上拉Rp，检查两条CC线
VCC1 = busilib.GetADC(ADC.CC1, 4)
VCC2 = busilib.GetADC(ADC.CC2, 4)
baselib.report(0x00, "读取到的 CC1 电压为: " .. VCC1 .. "mV, 读取到的 CC2 电压为: " .. VCC2 .. "mV.")  
if VCC1 > 250 or VCC2 > 250 then   -- 电压应小于0.25V
    IsPassV2 = 0
    baselib.report(0x00, "第四步检测CC线结果: PUT 加载了Rp.") 
end
if IsPassV2 == 1 then
    baselib.report(0x00, "检测结果为 PUT 没有反应, TD.4.3.6.V.2 pass.")
else
    baselib.report(0x00, "TD.4.3.6.V.2 fail.")
end

-- 第五步：在CC1上加载Rd,CC2加载Ra    （原文：CVS applies Rd and Ra on CC1 and CC2.）
busilib.SetSwitchState(SW.CC1_RA, 0)
busilib.SetSwitchState(SW.CC1_RD, 1)
baselib.report(0x00, "CVS 在 CC1 上提供Rd, CC2 上提供Ra.") 
baselib.delay(5)

-- 第六步：待测物不做出响应   （原文：CVS verifies no activity on the DUT. [TD.4.3.6.V.3]）
local IsPassV3 = 1  -- 标识检查点V3是否pass
-- 检查PUT不加载 Vconn
Vconn = busilib.GetADC(ADC.CC2, 4) 
if Vconn > 2750 then
    IsPassV3 = 0
    baselib.report(0x00, "第六步检测Vconn结果: PUT 加载了Vconn.") 
end
-- 检查不加载 VBus
VBUS = busilib.GetADC(ADC.VBUS, 4)   
if VBUS > 800 then
    IsPassV3 = 0
    baselib.report(0x00, "第六步检测VBUS结果: PUT 加载了VBUS.") 
end
-- 检查不上拉Rp，检查两条CC线
VCC1 = busilib.GetADC(ADC.CC1, 4)
VCC2 = busilib.GetADC(ADC.CC2, 4)
baselib.report(0x00, "读取到的 CC1 电压为: " .. VCC1 .. "mV, 读取到的 CC2 电压为: " .. VCC2 .. "mV.")  
if VCC1 > 250 or VCC2 > 250 then   -- 电压应小于0.25V
    IsPassV3 = 0
    baselib.report(0x00, "第六步检测CC线结果: PUT 加载了Rp.") 
end
if IsPassV3 == 1 then
    baselib.report(0x00, "检测结果为 PUT 没有反应, TD.4.3.6.V.3 pass.")
else
    baselib.report(0x00, "TD.4.3.6.V.3 fail.")
end

--上报脚本运行完毕
baselib.report(0x00, "脚本TD4.3.6 Sink Connect Accessories Test 运行完毕.")
baselib.report(0x07, "\x04")
